/*
 * Copyright (c) 2022  by Junzhao
 * THIS FILE IS PART OF JAVASE Song Huongkang PROJECT
 * All Rights Reserved.
 */

package 继承的体现;

import org.junit.Test;

import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description
 * @Author 俊昭
 * @Date 2022/4/22
 */
public class ExtendsTest {
    @Test
    public void test1(){
        // 以下操作都是允许的 编译通过的
        Object obj = null;
        String str = null;
        obj = str;

        Object[] obj1 = null;
        String[] str1 = null;
        obj1 = str1;


        // 不允许的操作
        List<Object> l1 = null;
        List<String> l2 = new ArrayList<>();
//        l1 = l2;需要的类型:List<Object> 提供的类型:List<String>此处了
//        l1与l2 没有子父类关系


//        反证证明
//        l1 = l2
//        l1.add(123);会导致123混入数据 出错！


    }
    @Test
    public void test02(){
        // 这样是可以的 实现类或者子类同泛型是可以赋值的
        List<String> l1 = null;
        AbstractList<String> l2= null;
        ArrayList<String> l3 = null;

        l1 = l3;
        l1 = l2;
        l2 = l3;


    }
/*
    void show(List<String> l){

    }
    void show(List<Integer> l){

    }
    'show(List<String>)' 与 'show(List<Integer>)' 冲突；两个方法具有相同的擦除
    java编译时会将泛型擦除
*/
}
